package br.com.friendzoone.pessoa.foto;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;

import br.com.friendzoone.foto.FotoSolr;
import br.com.friendzoone.modelo.pessoa.foto.Foto;
import br.com.friendzoone.recursos.RecursosFaces;
import br.com.friendzoone.solr.util.ValidacaoException;
import br.com.friendzoone.util.Pages;

@ManagedBean
@ViewScoped
public class FotoHome extends RecursosFaces implements Pages {

	private Foto foto = new Foto();
	private Set<Foto> fotos = new HashSet<Foto>();

	final Set<Foto> fotosVisualizacao = new HashSet<Foto>();
	final FotoSolr fotoSolr = new FotoSolr();
	public Foto getFoto() {
		return foto;
	}

	public void setFoto(Foto foto) {
		this.foto = foto;
	}


	public void salvar() throws IOException {
		
		final FacesContext facesContext = FacesContext.getCurrentInstance();

		final ExternalContext externalContext = facesContext.getExternalContext();

		try {
			for (final Foto fotoFor : this.getFotos()) {

				fotoFor.getPessoa().setId( this.getUsuarioLogado().getId() );
				fotoSolr.salvar(fotoFor);
			}

		} catch (ValidacaoException e) {
			e.printStackTrace();
		}
		fotos = new HashSet<Foto>();
		externalContext.redirect(externalContext.getRequestContextPath() + "/pages/pessoa/view-foto.zone");
	}

	public List<Foto> getFotosVisualizacao() {

		final Foto parametroFoto = new Foto();
		parametroFoto.getPessoa().setId(this.getUsuarioLogado().getId());
		
		return  fotoSolr.listar(Foto.class, parametroFoto);
	}

	public List<Foto> getFotos() {
		return new ArrayList<Foto>(fotos);
	}

	public void handleFileUpload(final FileUploadEvent event) {
		final UploadedFile item = event.getFile();
		final Foto arquivo = new Foto();
		arquivo.setTamanho(item.getSize() + "");
		arquivo.setNome(item.getFileName());
		arquivo.setDados(item.getContents());

		fotos.add(arquivo);
		System.out.println("Upload com sucesso...");

		FacesMessage msg = new FacesMessage("Imagem ", event.getFile().getFileName() + " foi carregado.");
		FacesContext.getCurrentInstance().addMessage(null, msg);
	}

}
